﻿namespace class8
{
    #region     知识点一   静态类
    //概念
    //用ststic修饰的类

    //特点
    //只能包含静态成员
    //不能被实例化

    //作用
    //1.将常用的静态成员写在静态类中  方便使用
    //2.静态类不能被实例化，更能体现工具类的唯一性
    //比如Console就是一个静态类

    static class TestStatic
    {
        //静态成员变量
        public static int testIndex = 0;
        public static void TestFun()
        {

        }
        public static int TestIndex
        {
            get;
            set;
        }
    }
    #endregion

    #region     知识点二  静态构造函数
    //概念
    //在构造函数上加static修饰

    //特点
    //1.静态类和普通类都可以有
    //2.不能使用访问修饰符
    //3.不能有参数
    //4.只会自动调用一次

    //作用
    //在静态构造函数中初始化  静态变量

    //使用
    //1.静态类中的静态构造函数
    static class StaticClass
    {
        public static int testIndex = 100;
        public static int testIndex2 = 100;

        //（第一次使用会自动调用一次）静态构造函数是自动调用的
        static StaticClass()//不能有参数
        {
            Console.WriteLine("静态构造函数");
        }
    }      
    //2.普通类中的静态构造函数
    class Test
    {
        public int testIndex = 63;
        static Test()//不能有参数
        {
            Console.WriteLine("静态构造");
        }
        public Test()
        {
            Console.WriteLine("普通构造");
        }
    }
    #endregion
        internal class class8
        {
            static void Main(string[] args)
            {
                Console.WriteLine("静态类和静态构造函数");
                Console.WriteLine(StaticClass.testIndex);
                Console.WriteLine(StaticClass.testIndex2);

                Test t = new Test();
                Test t2 = new Test();
            }
        }
    }
